home *** CD-ROM | disk | FTP | other *** search
/ Freelog 115 / FreelogNo115-MaiJuin2013.iso / Internet / Filezilla Server / FileZilla_Server-0_9_41.exe / source / includes / openssl / pqueue.h < prev    next >
C/C++ Source or Header  |  2012-02-26  |  4KB  |  97 lines

  1. /* crypto/pqueue/pqueue.h */
  2. /* 
  3.  * DTLS implementation written by Nagendra Modadugu
  4.  * (nagendra@cs.stanford.edu) for the OpenSSL project 2005.  
  5.  */
  6. /* ====================================================================
  7.  * Copyright (c) 1999-2005 The OpenSSL Project.  All rights reserved.
  8.  *
  9.  * Redistribution and use in source and binary forms, with or without
  10.  * modification, are permitted provided that the following conditions
  11.  * are met:
  12.  *
  13.  * 1. Redistributions of source code must retain the above copyright
  14.  *    notice, this list of conditions and the following disclaimer. 
  15.  *
  16.  * 2. Redistributions in binary form must reproduce the above copyright
  17.  *    notice, this list of conditions and the following disclaimer in
  18.  *    the documentation and/or other materials provided with the
  19.  *    distribution.
  20.  *
  21.  * 3. All advertising materials mentioning features or use of this
  22.  *    software must display the following acknowledgment:
  23.  *    "This product includes software developed by the OpenSSL Project
  24.  *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
  25.  *
  26.  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
  27.  *    endorse or promote products derived from this software without
  28.  *    prior written permission. For written permission, please contact
  29.  *    openssl-core@OpenSSL.org.
  30.  *
  31.  * 5. Products derived from this software may not be called "OpenSSL"
  32.  *    nor may "OpenSSL" appear in their names without prior written
  33.  *    permission of the OpenSSL Project.
  34.  *
  35.  * 6. Redistributions of any form whatsoever must retain the following
  36.  *    acknowledgment:
  37.  *    "This product includes software developed by the OpenSSL Project
  38.  *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
  39.  *
  40.  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
  41.  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  42.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  43.  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
  44.  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  45.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  46.  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  47.  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  48.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  49.  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  50.  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  51.  * OF THE POSSIBILITY OF SUCH DAMAGE.
  52.  * ====================================================================
  53.  *
  54.  * This product includes cryptographic software written by Eric Young
  55.  * (eay@cryptsoft.com).  This product includes software written by Tim
  56.  * Hudson (tjh@cryptsoft.com).
  57.  *
  58.  */
  59.  
  60. #ifndef HEADER_PQUEUE_H
  61. #define HEADER_PQUEUE_H
  62.  
  63. #include <stdio.h>
  64. #include <stdlib.h>
  65. #include <string.h>
  66.  
  67. #include <openssl/pq_compat.h>
  68.  
  69. typedef struct _pqueue *pqueue;
  70.  
  71. typedef struct _pitem
  72.     {
  73.     PQ_64BIT priority;
  74.     void *data;
  75.     struct _pitem *next;
  76.     } pitem;
  77.  
  78. typedef struct _pitem *piterator;
  79.  
  80. pitem *pitem_new(PQ_64BIT priority, void *data);
  81. void   pitem_free(pitem *item);
  82.  
  83. pqueue pqueue_new(void);
  84. void   pqueue_free(pqueue pq);
  85.  
  86. pitem *pqueue_insert(pqueue pq, pitem *item);
  87. pitem *pqueue_peek(pqueue pq);
  88. pitem *pqueue_pop(pqueue pq);
  89. pitem *pqueue_find(pqueue pq, PQ_64BIT priority);
  90. pitem *pqueue_iterator(pqueue pq);
  91. pitem *pqueue_next(piterator *iter);
  92.  
  93. void   pqueue_print(pqueue pq);
  94. int    pqueue_size(pqueue pq);
  95.  
  96. #endif /* ! HEADER_PQUEUE_H */
  97.